;; -*- scheme -*-
; object definitions ...
;; Enumerations and flags ...

(define-enum RenderNodeType
  (in-module "Gsk")
  (c-name "GskRenderNodeType")
  (gtype-id "GSK_TYPE_RENDER_NODE_TYPE")
  (values
    '("not-a-render-node" "GSK_NOT_A_RENDER_NODE")
    '("container-node" "GSK_CONTAINER_NODE")
    '("cairo-node" "GSK_CAIRO_NODE")
    '("color-node" "GSK_COLOR_NODE")
    '("linear-gradient-node" "GSK_LINEAR_GRADIENT_NODE")
    '("repeating-linear-gradient-node" "GSK_REPEATING_LINEAR_GRADIENT_NODE")
    '("radial-gradient-node" "GSK_RADIAL_GRADIENT_NODE")
    '("repeating-radial-gradient-node" "GSK_REPEATING_RADIAL_GRADIENT_NODE")
    '("conic-gradient-node" "GSK_CONIC_GRADIENT_NODE")
    '("border-node" "GSK_BORDER_NODE")
    '("texture-node" "GSK_TEXTURE_NODE")
    '("inset-shadow-node" "GSK_INSET_SHADOW_NODE")
    '("outset-shadow-node" "GSK_OUTSET_SHADOW_NODE")
    '("transform-node" "GSK_TRANSFORM_NODE")
    '("opacity-node" "GSK_OPACITY_NODE")
    '("color-matrix-node" "GSK_COLOR_MATRIX_NODE")
    '("repeat-node" "GSK_REPEAT_NODE")
    '("clip-node" "GSK_CLIP_NODE")
    '("rounded-clip-node" "GSK_ROUNDED_CLIP_NODE")
    '("shadow-node" "GSK_SHADOW_NODE")
    '("blend-node" "GSK_BLEND_NODE")
    '("cross-fade-node" "GSK_CROSS_FADE_NODE")
    '("text-node" "GSK_TEXT_NODE")
    '("blur-node" "GSK_BLUR_NODE")
    '("debug-node" "GSK_DEBUG_NODE")
    '("gl-shader-node" "GSK_GL_SHADER_NODE")
    '("texture-scale-node" "GSK_TEXTURE_SCALE_NODE")
    '("mask-node" "GSK_MASK_NODE")
    '("fill-node" "GSK_FILL_NODE")
    '("stroke-node" "GSK_STROKE_NODE")
    '("subsurface-node" "GSK_SUBSURFACE_NODE")
  )
)

(define-enum ScalingFilter
  (in-module "Gsk")
  (c-name "GskScalingFilter")
  (gtype-id "GSK_TYPE_SCALING_FILTER")
  (values
    '("linear" "GSK_SCALING_FILTER_LINEAR")
    '("nearest" "GSK_SCALING_FILTER_NEAREST")
    '("trilinear" "GSK_SCALING_FILTER_TRILINEAR")
  )
)

(define-enum BlendMode
  (in-module "Gsk")
  (c-name "GskBlendMode")
  (gtype-id "GSK_TYPE_BLEND_MODE")
  (values
    '("default" "GSK_BLEND_MODE_DEFAULT")
    '("multiply" "GSK_BLEND_MODE_MULTIPLY")
    '("screen" "GSK_BLEND_MODE_SCREEN")
    '("overlay" "GSK_BLEND_MODE_OVERLAY")
    '("darken" "GSK_BLEND_MODE_DARKEN")
    '("lighten" "GSK_BLEND_MODE_LIGHTEN")
    '("color-dodge" "GSK_BLEND_MODE_COLOR_DODGE")
    '("color-burn" "GSK_BLEND_MODE_COLOR_BURN")
    '("hard-light" "GSK_BLEND_MODE_HARD_LIGHT")
    '("soft-light" "GSK_BLEND_MODE_SOFT_LIGHT")
    '("difference" "GSK_BLEND_MODE_DIFFERENCE")
    '("exclusion" "GSK_BLEND_MODE_EXCLUSION")
    '("color" "GSK_BLEND_MODE_COLOR")
    '("hue" "GSK_BLEND_MODE_HUE")
    '("saturation" "GSK_BLEND_MODE_SATURATION")
    '("luminosity" "GSK_BLEND_MODE_LUMINOSITY")
  )
)

(define-enum Corner
  (in-module "Gsk")
  (c-name "GskCorner")
  (gtype-id "GSK_TYPE_CORNER")
  (values
    '("top-left" "GSK_CORNER_TOP_LEFT")
    '("top-right" "GSK_CORNER_TOP_RIGHT")
    '("bottom-right" "GSK_CORNER_BOTTOM_RIGHT")
    '("bottom-left" "GSK_CORNER_BOTTOM_LEFT")
  )
)

(define-enum FillRule
  (in-module "Gsk")
  (c-name "GskFillRule")
  (gtype-id "GSK_TYPE_FILL_RULE")
  (values
    '("winding" "GSK_FILL_RULE_WINDING")
    '("even-odd" "GSK_FILL_RULE_EVEN_ODD")
  )
)

(define-enum LineCap
  (in-module "Gsk")
  (c-name "GskLineCap")
  (gtype-id "GSK_TYPE_LINE_CAP")
  (values
    '("butt" "GSK_LINE_CAP_BUTT")
    '("round" "GSK_LINE_CAP_ROUND")
    '("square" "GSK_LINE_CAP_SQUARE")
  )
)

(define-enum LineJoin
  (in-module "Gsk")
  (c-name "GskLineJoin")
  (gtype-id "GSK_TYPE_LINE_JOIN")
  (values
    '("miter" "GSK_LINE_JOIN_MITER")
    '("round" "GSK_LINE_JOIN_ROUND")
    '("bevel" "GSK_LINE_JOIN_BEVEL")
  )
)

(define-enum PathOperation
  (in-module "Gsk")
  (c-name "GskPathOperation")
  (gtype-id "GSK_TYPE_PATH_OPERATION")
  (values
    '("move" "GSK_PATH_MOVE")
    '("close" "GSK_PATH_CLOSE")
    '("line" "GSK_PATH_LINE")
    '("quad" "GSK_PATH_QUAD")
    '("cubic" "GSK_PATH_CUBIC")
    '("conic" "GSK_PATH_CONIC")
  )
)

(define-enum PathDirection
  (in-module "Gsk")
  (c-name "GskPathDirection")
  (gtype-id "GSK_TYPE_PATH_DIRECTION")
  (values
    '("from-start" "GSK_PATH_FROM_START")
    '("to-start" "GSK_PATH_TO_START")
    '("to-end" "GSK_PATH_TO_END")
    '("from-end" "GSK_PATH_FROM_END")
  )
)

(define-enum SerializationError
  (in-module "Gsk")
  (c-name "GskSerializationError")
  (gtype-id "GSK_TYPE_SERIALIZATION_ERROR")
  (values
    '("unsupported-format" "GSK_SERIALIZATION_UNSUPPORTED_FORMAT")
    '("unsupported-version" "GSK_SERIALIZATION_UNSUPPORTED_VERSION")
    '("invalid-data" "GSK_SERIALIZATION_INVALID_DATA")
  )
)

(define-enum TransformCategory
  (in-module "Gsk")
  (c-name "GskTransformCategory")
  (gtype-id "GSK_TYPE_TRANSFORM_CATEGORY")
  (values
    '("unknown" "GSK_TRANSFORM_CATEGORY_UNKNOWN")
    '("any" "GSK_TRANSFORM_CATEGORY_ANY")
    '("3d" "GSK_TRANSFORM_CATEGORY_3D")
    '("2d" "GSK_TRANSFORM_CATEGORY_2D")
    '("2d-affine" "GSK_TRANSFORM_CATEGORY_2D_AFFINE")
    '("2d-translate" "GSK_TRANSFORM_CATEGORY_2D_TRANSLATE")
    '("identity" "GSK_TRANSFORM_CATEGORY_IDENTITY")
  )
)

(define-enum GLUniformType
  (in-module "Gsk")
  (c-name "GskGLUniformType")
  (gtype-id "GSK_TYPE_GL_UNIFORM_TYPE")
  (values
    '("none" "GSK_GL_UNIFORM_TYPE_NONE")
    '("float" "GSK_GL_UNIFORM_TYPE_FLOAT")
    '("int" "GSK_GL_UNIFORM_TYPE_INT")
    '("uint" "GSK_GL_UNIFORM_TYPE_UINT")
    '("bool" "GSK_GL_UNIFORM_TYPE_BOOL")
    '("vec2" "GSK_GL_UNIFORM_TYPE_VEC2")
    '("vec3" "GSK_GL_UNIFORM_TYPE_VEC3")
    '("vec4" "GSK_GL_UNIFORM_TYPE_VEC4")
  )
)

(define-enum MaskMode
  (in-module "Gsk")
  (c-name "GskMaskMode")
  (gtype-id "GSK_TYPE_MASK_MODE")
  (values
    '("alpha" "GSK_MASK_MODE_ALPHA")
    '("inverted-alpha" "GSK_MASK_MODE_INVERTED_ALPHA")
    '("luminance" "GSK_MASK_MODE_LUMINANCE")
    '("inverted-luminance" "GSK_MASK_MODE_INVERTED_LUMINANCE")
  )
)

(define-flags PathForeachFlags
  (in-module "Gsk")
  (c-name "GskPathForeachFlags")
  (gtype-id "GSK_TYPE_PATH_FOREACH_FLAGS")
  (values
    '("only-lines" "GSK_PATH_FOREACH_ALLOW_ONLY_LINES")
    '("quad" "GSK_PATH_FOREACH_ALLOW_QUAD")
    '("cubic" "GSK_PATH_FOREACH_ALLOW_CUBIC")
    '("conic" "GSK_PATH_FOREACH_ALLOW_CONIC")
  )
)


;; From gskcairorenderer.h

(define-function gsk_cairo_renderer_get_type
  (c-name "gsk_cairo_renderer_get_type")
  (return-type "GType")
)

(define-function gsk_cairo_renderer_new
  (c-name "gsk_cairo_renderer_new")
  (is-constructor-of "GskCairoRenderer")
  (return-type "GskRenderer*")
)



;; From gskenums.h



;; From gskglshader.h

(define-function gsk_gl_shader_new_from_bytes
  (c-name "gsk_gl_shader_new_from_bytes")
  (return-type "GskGLShader*")
  (parameters
    '("GBytes*" "sourcecode")
  )
)

(define-function gsk_gl_shader_new_from_resource
  (c-name "gsk_gl_shader_new_from_resource")
  (return-type "GskGLShader*")
  (parameters
    '("const-char*" "resource_path")
  )
)

(define-method compile
  (of-object "GskGLShader")
  (c-name "gsk_gl_shader_compile")
  (return-type "gboolean")
  (parameters
    '("GskRenderer*" "renderer")
    '("GError**" "error")
  )
)

(define-method get_source
  (of-object "GskGLShader")
  (c-name "gsk_gl_shader_get_source")
  (return-type "GBytes*")
)

(define-method get_resource
  (of-object "GskGLShader")
  (c-name "gsk_gl_shader_get_resource")
  (return-type "const-char*")
)

(define-method get_n_textures
  (of-object "GskGLShader")
  (c-name "gsk_gl_shader_get_n_textures")
  (return-type "int")
)

(define-method get_n_uniforms
  (of-object "GskGLShader")
  (c-name "gsk_gl_shader_get_n_uniforms")
  (return-type "int")
)

(define-method get_uniform_name
  (of-object "GskGLShader")
  (c-name "gsk_gl_shader_get_uniform_name")
  (return-type "const-char*")
  (parameters
    '("int" "idx")
  )
)

(define-method find_uniform_by_name
  (of-object "GskGLShader")
  (c-name "gsk_gl_shader_find_uniform_by_name")
  (return-type "int")
  (parameters
    '("const-char*" "name")
  )
)

(define-method get_uniform_type
  (of-object "GskGLShader")
  (c-name "gsk_gl_shader_get_uniform_type")
  (return-type "GskGLUniformType")
  (parameters
    '("int" "idx")
  )
)

(define-method get_uniform_offset
  (of-object "GskGLShader")
  (c-name "gsk_gl_shader_get_uniform_offset")
  (return-type "int")
  (parameters
    '("int" "idx")
  )
)

(define-method get_args_size
  (of-object "GskGLShader")
  (c-name "gsk_gl_shader_get_args_size")
  (return-type "gsize")
)

(define-method format_args_va
  (of-object "GskGLShader")
  (c-name "gsk_gl_shader_format_args_va")
  (return-type "GBytes*")
  (parameters
    '("va_list" "uniforms")
  )
)

(define-method format_args
  (of-object "GskGLShader")
  (c-name "gsk_gl_shader_format_args")
  (return-type "GBytes*")
  (parameters
  )
  (varargs #t)
)

(define-method get_arg_float
  (of-object "GskGLShader")
  (c-name "gsk_gl_shader_get_arg_float")
  (return-type "float")
  (parameters
    '("GBytes*" "args")
    '("int" "idx")
  )
)

(define-method get_arg_int
  (of-object "GskGLShader")
  (c-name "gsk_gl_shader_get_arg_int")
  (return-type "gint32")
  (parameters
    '("GBytes*" "args")
    '("int" "idx")
  )
)

(define-method get_arg_uint
  (of-object "GskGLShader")
  (c-name "gsk_gl_shader_get_arg_uint")
  (return-type "guint32")
  (parameters
    '("GBytes*" "args")
    '("int" "idx")
  )
)

(define-method get_arg_bool
  (of-object "GskGLShader")
  (c-name "gsk_gl_shader_get_arg_bool")
  (return-type "gboolean")
  (parameters
    '("GBytes*" "args")
    '("int" "idx")
  )
)

(define-method get_arg_vec2
  (of-object "GskGLShader")
  (c-name "gsk_gl_shader_get_arg_vec2")
  (return-type "none")
  (parameters
    '("GBytes*" "args")
    '("int" "idx")
    '("graphene_vec2_t*" "out_value")
  )
)

(define-method get_arg_vec3
  (of-object "GskGLShader")
  (c-name "gsk_gl_shader_get_arg_vec3")
  (return-type "none")
  (parameters
    '("GBytes*" "args")
    '("int" "idx")
    '("graphene_vec3_t*" "out_value")
  )
)

(define-method get_arg_vec4
  (of-object "GskGLShader")
  (c-name "gsk_gl_shader_get_arg_vec4")
  (return-type "none")
  (parameters
    '("GBytes*" "args")
    '("int" "idx")
    '("graphene_vec4_t*" "out_value")
  )
)

(define-function gsk_shader_args_builder_get_type
  (c-name "gsk_shader_args_builder_get_type")
  (return-type "GType")
)

(define-function gsk_shader_args_builder_new
  (c-name "gsk_shader_args_builder_new")
  (is-constructor-of "GskShaderArgsBuilder")
  (return-type "GskShaderArgsBuilder*")
  (parameters
    '("GskGLShader*" "shader")
    '("GBytes*" "initial_values")
  )
)

(define-method to_args
  (of-object "GskShaderArgsBuilder")
  (c-name "gsk_shader_args_builder_to_args")
  (return-type "GBytes*")
)

(define-method free_to_args
  (of-object "GskShaderArgsBuilder")
  (c-name "gsk_shader_args_builder_free_to_args")
  (return-type "GBytes*")
)

(define-method ref
  (of-object "GskShaderArgsBuilder")
  (c-name "gsk_shader_args_builder_ref")
  (return-type "GskShaderArgsBuilder*")
)

(define-method unref
  (of-object "GskShaderArgsBuilder")
  (c-name "gsk_shader_args_builder_unref")
  (return-type "none")
)

(define-method set_float
  (of-object "GskShaderArgsBuilder")
  (c-name "gsk_shader_args_builder_set_float")
  (return-type "none")
  (parameters
    '("int" "idx")
    '("float" "value")
  )
)

(define-method set_int
  (of-object "GskShaderArgsBuilder")
  (c-name "gsk_shader_args_builder_set_int")
  (return-type "none")
  (parameters
    '("int" "idx")
    '("gint32" "value")
  )
)

(define-method set_uint
  (of-object "GskShaderArgsBuilder")
  (c-name "gsk_shader_args_builder_set_uint")
  (return-type "none")
  (parameters
    '("int" "idx")
    '("guint32" "value")
  )
)

(define-method set_bool
  (of-object "GskShaderArgsBuilder")
  (c-name "gsk_shader_args_builder_set_bool")
  (return-type "none")
  (parameters
    '("int" "idx")
    '("gboolean" "value")
  )
)

(define-method set_vec2
  (of-object "GskShaderArgsBuilder")
  (c-name "gsk_shader_args_builder_set_vec2")
  (return-type "none")
  (parameters
    '("int" "idx")
    '("const-graphene_vec2_t*" "value")
  )
)

(define-method set_vec3
  (of-object "GskShaderArgsBuilder")
  (c-name "gsk_shader_args_builder_set_vec3")
  (return-type "none")
  (parameters
    '("int" "idx")
    '("const-graphene_vec3_t*" "value")
  )
)

(define-method set_vec4
  (of-object "GskShaderArgsBuilder")
  (c-name "gsk_shader_args_builder_set_vec4")
  (return-type "none")
  (parameters
    '("int" "idx")
    '("const-graphene_vec4_t*" "value")
  )
)



;; From gsk.h



;; From gskpathbuilder.h

(define-function gsk_path_builder_get_type
  (c-name "gsk_path_builder_get_type")
  (return-type "GType")
)

(define-function gsk_path_builder_new
  (c-name "gsk_path_builder_new")
  (is-constructor-of "GskPathBuilder")
  (return-type "GskPathBuilder*")
)

(define-method ref
  (of-object "GskPathBuilder")
  (c-name "gsk_path_builder_ref")
  (return-type "GskPathBuilder*")
)

(define-method unref
  (of-object "GskPathBuilder")
  (c-name "gsk_path_builder_unref")
  (return-type "none")
)

(define-method free_to_path
  (of-object "GskPathBuilder")
  (c-name "gsk_path_builder_free_to_path")
  (return-type "GskPath*")
)

(define-method to_path
  (of-object "GskPathBuilder")
  (c-name "gsk_path_builder_to_path")
  (return-type "GskPath*")
)

(define-method get_current_point
  (of-object "GskPathBuilder")
  (c-name "gsk_path_builder_get_current_point")
  (return-type "const-graphene_point_t*")
)

(define-method add_path
  (of-object "GskPathBuilder")
  (c-name "gsk_path_builder_add_path")
  (return-type "none")
  (parameters
    '("GskPath*" "path")
  )
)

(define-method add_reverse_path
  (of-object "GskPathBuilder")
  (c-name "gsk_path_builder_add_reverse_path")
  (return-type "none")
  (parameters
    '("GskPath*" "path")
  )
)

(define-method add_cairo_path
  (of-object "GskPathBuilder")
  (c-name "gsk_path_builder_add_cairo_path")
  (return-type "none")
  (parameters
    '("const-cairo_path_t*" "path")
  )
)

(define-method add_layout
  (of-object "GskPathBuilder")
  (c-name "gsk_path_builder_add_layout")
  (return-type "none")
  (parameters
    '("PangoLayout*" "layout")
  )
)

(define-method add_rect
  (of-object "GskPathBuilder")
  (c-name "gsk_path_builder_add_rect")
  (return-type "none")
  (parameters
    '("const-graphene_rect_t*" "rect")
  )
)

(define-method add_rounded_rect
  (of-object "GskPathBuilder")
  (c-name "gsk_path_builder_add_rounded_rect")
  (return-type "none")
  (parameters
    '("const-GskRoundedRect*" "rect")
  )
)

(define-method add_circle
  (of-object "GskPathBuilder")
  (c-name "gsk_path_builder_add_circle")
  (return-type "none")
  (parameters
    '("const-graphene_point_t*" "center")
    '("float" "radius")
  )
)

(define-method add_segment
  (of-object "GskPathBuilder")
  (c-name "gsk_path_builder_add_segment")
  (return-type "none")
  (parameters
    '("GskPath*" "path")
    '("const-GskPathPoint*" "start")
    '("const-GskPathPoint*" "end")
  )
)

(define-method move_to
  (of-object "GskPathBuilder")
  (c-name "gsk_path_builder_move_to")
  (return-type "none")
  (parameters
    '("float" "x")
    '("float" "y")
  )
)

(define-method rel_move_to
  (of-object "GskPathBuilder")
  (c-name "gsk_path_builder_rel_move_to")
  (return-type "none")
  (parameters
    '("float" "x")
    '("float" "y")
  )
)

(define-method line_to
  (of-object "GskPathBuilder")
  (c-name "gsk_path_builder_line_to")
  (return-type "none")
  (parameters
    '("float" "x")
    '("float" "y")
  )
)

(define-method rel_line_to
  (of-object "GskPathBuilder")
  (c-name "gsk_path_builder_rel_line_to")
  (return-type "none")
  (parameters
    '("float" "x")
    '("float" "y")
  )
)

(define-method quad_to
  (of-object "GskPathBuilder")
  (c-name "gsk_path_builder_quad_to")
  (return-type "none")
  (parameters
    '("float" "x1")
    '("float" "y1")
    '("float" "x2")
    '("float" "y2")
  )
)

(define-method rel_quad_to
  (of-object "GskPathBuilder")
  (c-name "gsk_path_builder_rel_quad_to")
  (return-type "none")
  (parameters
    '("float" "x1")
    '("float" "y1")
    '("float" "x2")
    '("float" "y2")
  )
)

(define-method cubic_to
  (of-object "GskPathBuilder")
  (c-name "gsk_path_builder_cubic_to")
  (return-type "none")
  (parameters
    '("float" "x1")
    '("float" "y1")
    '("float" "x2")
    '("float" "y2")
    '("float" "x3")
    '("float" "y3")
  )
)

(define-method rel_cubic_to
  (of-object "GskPathBuilder")
  (c-name "gsk_path_builder_rel_cubic_to")
  (return-type "none")
  (parameters
    '("float" "x1")
    '("float" "y1")
    '("float" "x2")
    '("float" "y2")
    '("float" "x3")
    '("float" "y3")
  )
)

(define-method conic_to
  (of-object "GskPathBuilder")
  (c-name "gsk_path_builder_conic_to")
  (return-type "none")
  (parameters
    '("float" "x1")
    '("float" "y1")
    '("float" "x2")
    '("float" "y2")
    '("float" "weight")
  )
)

(define-method rel_conic_to
  (of-object "GskPathBuilder")
  (c-name "gsk_path_builder_rel_conic_to")
  (return-type "none")
  (parameters
    '("float" "x1")
    '("float" "y1")
    '("float" "x2")
    '("float" "y2")
    '("float" "weight")
  )
)

(define-method arc_to
  (of-object "GskPathBuilder")
  (c-name "gsk_path_builder_arc_to")
  (return-type "none")
  (parameters
    '("float" "x1")
    '("float" "y1")
    '("float" "x2")
    '("float" "y2")
  )
)

(define-method rel_arc_to
  (of-object "GskPathBuilder")
  (c-name "gsk_path_builder_rel_arc_to")
  (return-type "none")
  (parameters
    '("float" "x1")
    '("float" "y1")
    '("float" "x2")
    '("float" "y2")
  )
)

(define-method svg_arc_to
  (of-object "GskPathBuilder")
  (c-name "gsk_path_builder_svg_arc_to")
  (return-type "none")
  (parameters
    '("float" "rx")
    '("float" "ry")
    '("float" "x_axis_rotation")
    '("gboolean" "large_arc")
    '("gboolean" "positive_sweep")
    '("float" "x")
    '("float" "y")
  )
)

(define-method rel_svg_arc_to
  (of-object "GskPathBuilder")
  (c-name "gsk_path_builder_rel_svg_arc_to")
  (return-type "none")
  (parameters
    '("float" "rx")
    '("float" "ry")
    '("float" "x_axis_rotation")
    '("gboolean" "large_arc")
    '("gboolean" "positive_sweep")
    '("float" "x")
    '("float" "y")
  )
)

(define-method html_arc_to
  (of-object "GskPathBuilder")
  (c-name "gsk_path_builder_html_arc_to")
  (return-type "none")
  (parameters
    '("float" "x1")
    '("float" "y1")
    '("float" "x2")
    '("float" "y2")
    '("float" "radius")
  )
)

(define-method rel_html_arc_to
  (of-object "GskPathBuilder")
  (c-name "gsk_path_builder_rel_html_arc_to")
  (return-type "none")
  (parameters
    '("float" "x1")
    '("float" "y1")
    '("float" "x2")
    '("float" "y2")
    '("float" "radius")
  )
)

(define-method close
  (of-object "GskPathBuilder")
  (c-name "gsk_path_builder_close")
  (return-type "none")
)



;; From gskpath.h

(define-function gsk_path_get_type
  (c-name "gsk_path_get_type")
  (return-type "GType")
)

(define-method ref
  (of-object "GskPath")
  (c-name "gsk_path_ref")
  (return-type "GskPath*")
)

(define-method unref
  (of-object "GskPath")
  (c-name "gsk_path_unref")
  (return-type "none")
)

(define-method print
  (of-object "GskPath")
  (c-name "gsk_path_print")
  (return-type "none")
  (parameters
    '("GString*" "string")
  )
)

(define-method to_string
  (of-object "GskPath")
  (c-name "gsk_path_to_string")
  (return-type "char*")
)

(define-function gsk_path_parse
  (c-name "gsk_path_parse")
  (return-type "GskPath*")
  (parameters
    '("const-char*" "string")
  )
)

(define-method to_cairo
  (of-object "GskPath")
  (c-name "gsk_path_to_cairo")
  (return-type "none")
  (parameters
    '("cairo_t*" "cr")
  )
)

(define-method is_empty
  (of-object "GskPath")
  (c-name "gsk_path_is_empty")
  (return-type "gboolean")
)

(define-method is_closed
  (of-object "GskPath")
  (c-name "gsk_path_is_closed")
  (return-type "gboolean")
)

(define-method get_bounds
  (of-object "GskPath")
  (c-name "gsk_path_get_bounds")
  (return-type "gboolean")
  (parameters
    '("graphene_rect_t*" "bounds")
  )
)

(define-method get_stroke_bounds
  (of-object "GskPath")
  (c-name "gsk_path_get_stroke_bounds")
  (return-type "gboolean")
  (parameters
    '("const-GskStroke*" "stroke")
    '("graphene_rect_t*" "bounds")
  )
)

(define-method in_fill
  (of-object "GskPath")
  (c-name "gsk_path_in_fill")
  (return-type "gboolean")
  (parameters
    '("const-graphene_point_t*" "point")
    '("GskFillRule" "fill_rule")
  )
)

(define-method get_start_point
  (of-object "GskPath")
  (c-name "gsk_path_get_start_point")
  (return-type "gboolean")
  (parameters
    '("GskPathPoint*" "result")
  )
)

(define-method get_end_point
  (of-object "GskPath")
  (c-name "gsk_path_get_end_point")
  (return-type "gboolean")
  (parameters
    '("GskPathPoint*" "result")
  )
)

(define-method get_closest_point
  (of-object "GskPath")
  (c-name "gsk_path_get_closest_point")
  (return-type "gboolean")
  (parameters
    '("const-graphene_point_t*" "point")
    '("float" "threshold")
    '("GskPathPoint*" "result")
    '("float*" "distance")
  )
)

(define-method foreach
  (of-object "GskPath")
  (c-name "gsk_path_foreach")
  (return-type "gboolean")
  (parameters
    '("GskPathForeachFlags" "flags")
    '("GskPathForeachFunc" "func")
    '("gpointer" "user_data")
  )
)



;; From gskpathmeasure.h

(define-function gsk_path_measure_get_type
  (c-name "gsk_path_measure_get_type")
  (return-type "GType")
)

(define-method measure_new
  (of-object "GskPath")
  (c-name "gsk_path_measure_new")
  (return-type "GskPathMeasure*")
)

(define-method measure_new_with_tolerance
  (of-object "GskPath")
  (c-name "gsk_path_measure_new_with_tolerance")
  (return-type "GskPathMeasure*")
  (parameters
    '("float" "tolerance")
  )
)

(define-method ref
  (of-object "GskPathMeasure")
  (c-name "gsk_path_measure_ref")
  (return-type "GskPathMeasure*")
)

(define-method unref
  (of-object "GskPathMeasure")
  (c-name "gsk_path_measure_unref")
  (return-type "none")
)

(define-method get_path
  (of-object "GskPathMeasure")
  (c-name "gsk_path_measure_get_path")
  (return-type "GskPath*")
)

(define-method get_tolerance
  (of-object "GskPathMeasure")
  (c-name "gsk_path_measure_get_tolerance")
  (return-type "float")
)

(define-method get_length
  (of-object "GskPathMeasure")
  (c-name "gsk_path_measure_get_length")
  (return-type "float")
)

(define-method get_point
  (of-object "GskPathMeasure")
  (c-name "gsk_path_measure_get_point")
  (return-type "gboolean")
  (parameters
    '("float" "distance")
    '("GskPathPoint*" "result")
  )
)



;; From gskpathpoint.h

(define-function gsk_path_point_get_type
  (c-name "gsk_path_point_get_type")
  (return-type "GType")
)

(define-method copy
  (of-object "GskPathPoint")
  (c-name "gsk_path_point_copy")
  (return-type "GskPathPoint*")
)

(define-method free
  (of-object "GskPathPoint")
  (c-name "gsk_path_point_free")
  (return-type "none")
)

(define-method equal
  (of-object "GskPathPoint")
  (c-name "gsk_path_point_equal")
  (return-type "gboolean")
  (parameters
    '("const-GskPathPoint*" "point2")
  )
)

(define-method compare
  (of-object "GskPathPoint")
  (c-name "gsk_path_point_compare")
  (return-type "int")
  (parameters
    '("const-GskPathPoint*" "point2")
  )
)

(define-method get_position
  (of-object "GskPathPoint")
  (c-name "gsk_path_point_get_position")
  (return-type "none")
  (parameters
    '("GskPath*" "path")
    '("graphene_point_t*" "position")
  )
)

(define-method get_tangent
  (of-object "GskPathPoint")
  (c-name "gsk_path_point_get_tangent")
  (return-type "none")
  (parameters
    '("GskPath*" "path")
    '("GskPathDirection" "direction")
    '("graphene_vec2_t*" "tangent")
  )
)

(define-method get_rotation
  (of-object "GskPathPoint")
  (c-name "gsk_path_point_get_rotation")
  (return-type "float")
  (parameters
    '("GskPath*" "path")
    '("GskPathDirection" "direction")
  )
)

(define-method get_curvature
  (of-object "GskPathPoint")
  (c-name "gsk_path_point_get_curvature")
  (return-type "float")
  (parameters
    '("GskPath*" "path")
    '("GskPathDirection" "direction")
    '("graphene_point_t*" "center")
  )
)

(define-method get_distance
  (of-object "GskPathPoint")
  (c-name "gsk_path_point_get_distance")
  (return-type "float")
  (parameters
    '("GskPathMeasure*" "measure")
  )
)



;; From gskrenderer.h

(define-function gsk_renderer_get_type
  (c-name "gsk_renderer_get_type")
  (return-type "GType")
)

(define-function gsk_renderer_new_for_surface
  (c-name "gsk_renderer_new_for_surface")
  (return-type "GskRenderer*")
  (parameters
    '("GdkSurface*" "surface")
  )
)

(define-method get_surface
  (of-object "GskRenderer")
  (c-name "gsk_renderer_get_surface")
  (return-type "GdkSurface*")
)

(define-method realize
  (of-object "GskRenderer")
  (c-name "gsk_renderer_realize")
  (return-type "gboolean")
  (parameters
    '("GdkSurface*" "surface")
    '("GError**" "error")
  )
)

(define-method realize_for_display
  (of-object "GskRenderer")
  (c-name "gsk_renderer_realize_for_display")
  (return-type "gboolean")
  (parameters
    '("GdkDisplay*" "display")
    '("GError**" "error")
  )
)

(define-method unrealize
  (of-object "GskRenderer")
  (c-name "gsk_renderer_unrealize")
  (return-type "none")
)

(define-method is_realized
  (of-object "GskRenderer")
  (c-name "gsk_renderer_is_realized")
  (return-type "gboolean")
)

(define-method render_texture
  (of-object "GskRenderer")
  (c-name "gsk_renderer_render_texture")
  (return-type "GdkTexture*")
  (parameters
    '("GskRenderNode*" "root")
    '("const-graphene_rect_t*" "viewport")
  )
)

(define-method render
  (of-object "GskRenderer")
  (c-name "gsk_renderer_render")
  (return-type "none")
  (parameters
    '("GskRenderNode*" "root")
    '("const-cairo_region_t*" "region")
  )
)



;; From gskrendernode.h

(define-function gsk_render_node_get_type
  (c-name "gsk_render_node_get_type")
  (return-type "GType")
)

(define-function gsk_serialization_error_quark
  (c-name "gsk_serialization_error_quark")
  (return-type "GQuark")
)

(define-method ref
  (of-object "GskRenderNode")
  (c-name "gsk_render_node_ref")
  (return-type "GskRenderNode*")
)

(define-method unref
  (of-object "GskRenderNode")
  (c-name "gsk_render_node_unref")
  (return-type "none")
)

(define-method get_node_type
  (of-object "GskRenderNode")
  (c-name "gsk_render_node_get_node_type")
  (return-type "GskRenderNodeType")
)

(define-method get_bounds
  (of-object "GskRenderNode")
  (c-name "gsk_render_node_get_bounds")
  (return-type "none")
  (parameters
    '("graphene_rect_t*" "bounds")
  )
)

(define-method get_opaque_rect
  (of-object "GskRenderNode")
  (c-name "gsk_render_node_get_opaque_rect")
  (return-type "gboolean")
  (parameters
    '("graphene_rect_t*" "out_opaque")
  )
)

(define-method draw
  (of-object "GskRenderNode")
  (c-name "gsk_render_node_draw")
  (return-type "none")
  (parameters
    '("cairo_t*" "cr")
  )
)

(define-method serialize
  (of-object "GskRenderNode")
  (c-name "gsk_render_node_serialize")
  (return-type "GBytes*")
)

(define-method write_to_file
  (of-object "GskRenderNode")
  (c-name "gsk_render_node_write_to_file")
  (return-type "gboolean")
  (parameters
    '("const-char*" "filename")
    '("GError**" "error")
  )
)

(define-function gsk_render_node_deserialize
  (c-name "gsk_render_node_deserialize")
  (return-type "GskRenderNode*")
  (parameters
    '("GBytes*" "bytes")
    '("GskParseErrorFunc" "error_func")
    '("gpointer" "user_data")
  )
)

(define-function gsk_debug_node_get_type
  (c-name "gsk_debug_node_get_type")
  (return-type "GType")
)

(define-function gsk_debug_node_new
  (c-name "gsk_debug_node_new")
  (is-constructor-of "GskDebugNode")
  (return-type "GskRenderNode*")
  (parameters
    '("GskRenderNode*" "child")
    '("char*" "message")
  )
)

(define-function gsk_debug_node_get_child
  (c-name "gsk_debug_node_get_child")
  (return-type "GskRenderNode*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_debug_node_get_message
  (c-name "gsk_debug_node_get_message")
  (return-type "const-char*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_color_node_get_type
  (c-name "gsk_color_node_get_type")
  (return-type "GType")
)

(define-function gsk_color_node_new
  (c-name "gsk_color_node_new")
  (is-constructor-of "GskColorNode")
  (return-type "GskRenderNode*")
  (parameters
    '("const-GdkRGBA*" "rgba")
    '("const-graphene_rect_t*" "bounds")
  )
)

(define-function gsk_color_node_get_color
  (c-name "gsk_color_node_get_color")
  (return-type "const-GdkRGBA*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_texture_node_get_type
  (c-name "gsk_texture_node_get_type")
  (return-type "GType")
)

(define-function gsk_texture_node_new
  (c-name "gsk_texture_node_new")
  (is-constructor-of "GskTextureNode")
  (return-type "GskRenderNode*")
  (parameters
    '("GdkTexture*" "texture")
    '("const-graphene_rect_t*" "bounds")
  )
)

(define-function gsk_texture_node_get_texture
  (c-name "gsk_texture_node_get_texture")
  (return-type "GdkTexture*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_texture_scale_node_get_type
  (c-name "gsk_texture_scale_node_get_type")
  (return-type "GType")
)

(define-function gsk_texture_scale_node_new
  (c-name "gsk_texture_scale_node_new")
  (is-constructor-of "GskTextureScaleNode")
  (return-type "GskRenderNode*")
  (parameters
    '("GdkTexture*" "texture")
    '("const-graphene_rect_t*" "bounds")
    '("GskScalingFilter" "filter")
  )
)

(define-function gsk_texture_scale_node_get_texture
  (c-name "gsk_texture_scale_node_get_texture")
  (return-type "GdkTexture*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_texture_scale_node_get_filter
  (c-name "gsk_texture_scale_node_get_filter")
  (return-type "GskScalingFilter")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_linear_gradient_node_get_type
  (c-name "gsk_linear_gradient_node_get_type")
  (return-type "GType")
)

(define-function gsk_linear_gradient_node_new
  (c-name "gsk_linear_gradient_node_new")
  (is-constructor-of "GskLinearGradientNode")
  (return-type "GskRenderNode*")
  (parameters
    '("const-graphene_rect_t*" "bounds")
    '("const-graphene_point_t*" "start")
    '("const-graphene_point_t*" "end")
    '("const-GskColorStop*" "color_stops")
    '("gsize" "n_color_stops")
  )
)

(define-function gsk_linear_gradient_node_get_start
  (c-name "gsk_linear_gradient_node_get_start")
  (return-type "const-graphene_point_t*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_linear_gradient_node_get_end
  (c-name "gsk_linear_gradient_node_get_end")
  (return-type "const-graphene_point_t*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_linear_gradient_node_get_n_color_stops
  (c-name "gsk_linear_gradient_node_get_n_color_stops")
  (return-type "gsize")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_linear_gradient_node_get_color_stops
  (c-name "gsk_linear_gradient_node_get_color_stops")
  (return-type "const-GskColorStop*")
  (parameters
    '("const-GskRenderNode*" "node")
    '("gsize*" "n_stops")
  )
)

(define-function gsk_repeating_linear_gradient_node_get_type
  (c-name "gsk_repeating_linear_gradient_node_get_type")
  (return-type "GType")
)

(define-function gsk_repeating_linear_gradient_node_new
  (c-name "gsk_repeating_linear_gradient_node_new")
  (is-constructor-of "GskRepeatingLinearGradientNode")
  (return-type "GskRenderNode*")
  (parameters
    '("const-graphene_rect_t*" "bounds")
    '("const-graphene_point_t*" "start")
    '("const-graphene_point_t*" "end")
    '("const-GskColorStop*" "color_stops")
    '("gsize" "n_color_stops")
  )
)

(define-function gsk_conic_gradient_node_get_type
  (c-name "gsk_conic_gradient_node_get_type")
  (return-type "GType")
)

(define-function gsk_conic_gradient_node_new
  (c-name "gsk_conic_gradient_node_new")
  (is-constructor-of "GskConicGradientNode")
  (return-type "GskRenderNode*")
  (parameters
    '("const-graphene_rect_t*" "bounds")
    '("const-graphene_point_t*" "center")
    '("float" "rotation")
    '("const-GskColorStop*" "color_stops")
    '("gsize" "n_color_stops")
  )
)

(define-function gsk_conic_gradient_node_get_center
  (c-name "gsk_conic_gradient_node_get_center")
  (return-type "const-graphene_point_t*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_conic_gradient_node_get_rotation
  (c-name "gsk_conic_gradient_node_get_rotation")
  (return-type "float")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_conic_gradient_node_get_angle
  (c-name "gsk_conic_gradient_node_get_angle")
  (return-type "float")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_conic_gradient_node_get_n_color_stops
  (c-name "gsk_conic_gradient_node_get_n_color_stops")
  (return-type "gsize")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_conic_gradient_node_get_color_stops
  (c-name "gsk_conic_gradient_node_get_color_stops")
  (return-type "const-GskColorStop*")
  (parameters
    '("const-GskRenderNode*" "node")
    '("gsize*" "n_stops")
  )
)

(define-function gsk_radial_gradient_node_get_type
  (c-name "gsk_radial_gradient_node_get_type")
  (return-type "GType")
)

(define-function gsk_radial_gradient_node_new
  (c-name "gsk_radial_gradient_node_new")
  (is-constructor-of "GskRadialGradientNode")
  (return-type "GskRenderNode*")
  (parameters
    '("const-graphene_rect_t*" "bounds")
    '("const-graphene_point_t*" "center")
    '("float" "hradius")
    '("float" "vradius")
    '("float" "start")
    '("float" "end")
    '("const-GskColorStop*" "color_stops")
    '("gsize" "n_color_stops")
  )
)

(define-function gsk_radial_gradient_node_get_n_color_stops
  (c-name "gsk_radial_gradient_node_get_n_color_stops")
  (return-type "gsize")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_radial_gradient_node_get_color_stops
  (c-name "gsk_radial_gradient_node_get_color_stops")
  (return-type "const-GskColorStop*")
  (parameters
    '("const-GskRenderNode*" "node")
    '("gsize*" "n_stops")
  )
)

(define-function gsk_radial_gradient_node_get_center
  (c-name "gsk_radial_gradient_node_get_center")
  (return-type "const-graphene_point_t*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_radial_gradient_node_get_hradius
  (c-name "gsk_radial_gradient_node_get_hradius")
  (return-type "float")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_radial_gradient_node_get_vradius
  (c-name "gsk_radial_gradient_node_get_vradius")
  (return-type "float")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_radial_gradient_node_get_start
  (c-name "gsk_radial_gradient_node_get_start")
  (return-type "float")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_radial_gradient_node_get_end
  (c-name "gsk_radial_gradient_node_get_end")
  (return-type "float")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_repeating_radial_gradient_node_get_type
  (c-name "gsk_repeating_radial_gradient_node_get_type")
  (return-type "GType")
)

(define-function gsk_repeating_radial_gradient_node_new
  (c-name "gsk_repeating_radial_gradient_node_new")
  (is-constructor-of "GskRepeatingRadialGradientNode")
  (return-type "GskRenderNode*")
  (parameters
    '("const-graphene_rect_t*" "bounds")
    '("const-graphene_point_t*" "center")
    '("float" "hradius")
    '("float" "vradius")
    '("float" "start")
    '("float" "end")
    '("const-GskColorStop*" "color_stops")
    '("gsize" "n_color_stops")
  )
)

(define-function gsk_border_node_get_type
  (c-name "gsk_border_node_get_type")
  (return-type "GType")
)

(define-function gsk_border_node_new
  (c-name "gsk_border_node_new")
  (is-constructor-of "GskBorderNode")
  (return-type "GskRenderNode*")
  (parameters
    '("const-GskRoundedRect*" "outline")
    '("const-float" "border_width[4]")
    '("const-GdkRGBA" "border_color[4]")
  )
)

(define-function gsk_border_node_get_outline
  (c-name "gsk_border_node_get_outline")
  (return-type "const-GskRoundedRect*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_border_node_get_widths
  (c-name "gsk_border_node_get_widths")
  (return-type "const-float*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_border_node_get_colors
  (c-name "gsk_border_node_get_colors")
  (return-type "const-GdkRGBA*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_inset_shadow_node_get_type
  (c-name "gsk_inset_shadow_node_get_type")
  (return-type "GType")
)

(define-function gsk_inset_shadow_node_new
  (c-name "gsk_inset_shadow_node_new")
  (is-constructor-of "GskInsetShadowNode")
  (return-type "GskRenderNode*")
  (parameters
    '("const-GskRoundedRect*" "outline")
    '("const-GdkRGBA*" "color")
    '("float" "dx")
    '("float" "dy")
    '("float" "spread")
    '("float" "blur_radius")
  )
)

(define-function gsk_inset_shadow_node_get_outline
  (c-name "gsk_inset_shadow_node_get_outline")
  (return-type "const-GskRoundedRect*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_inset_shadow_node_get_color
  (c-name "gsk_inset_shadow_node_get_color")
  (return-type "const-GdkRGBA*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_inset_shadow_node_get_dx
  (c-name "gsk_inset_shadow_node_get_dx")
  (return-type "float")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_inset_shadow_node_get_dy
  (c-name "gsk_inset_shadow_node_get_dy")
  (return-type "float")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_inset_shadow_node_get_spread
  (c-name "gsk_inset_shadow_node_get_spread")
  (return-type "float")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_inset_shadow_node_get_blur_radius
  (c-name "gsk_inset_shadow_node_get_blur_radius")
  (return-type "float")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_outset_shadow_node_get_type
  (c-name "gsk_outset_shadow_node_get_type")
  (return-type "GType")
)

(define-function gsk_outset_shadow_node_new
  (c-name "gsk_outset_shadow_node_new")
  (is-constructor-of "GskOutsetShadowNode")
  (return-type "GskRenderNode*")
  (parameters
    '("const-GskRoundedRect*" "outline")
    '("const-GdkRGBA*" "color")
    '("float" "dx")
    '("float" "dy")
    '("float" "spread")
    '("float" "blur_radius")
  )
)

(define-function gsk_outset_shadow_node_get_outline
  (c-name "gsk_outset_shadow_node_get_outline")
  (return-type "const-GskRoundedRect*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_outset_shadow_node_get_color
  (c-name "gsk_outset_shadow_node_get_color")
  (return-type "const-GdkRGBA*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_outset_shadow_node_get_dx
  (c-name "gsk_outset_shadow_node_get_dx")
  (return-type "float")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_outset_shadow_node_get_dy
  (c-name "gsk_outset_shadow_node_get_dy")
  (return-type "float")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_outset_shadow_node_get_spread
  (c-name "gsk_outset_shadow_node_get_spread")
  (return-type "float")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_outset_shadow_node_get_blur_radius
  (c-name "gsk_outset_shadow_node_get_blur_radius")
  (return-type "float")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_cairo_node_get_type
  (c-name "gsk_cairo_node_get_type")
  (return-type "GType")
)

(define-function gsk_cairo_node_new
  (c-name "gsk_cairo_node_new")
  (is-constructor-of "GskCairoNode")
  (return-type "GskRenderNode*")
  (parameters
    '("const-graphene_rect_t*" "bounds")
  )
)

(define-function gsk_cairo_node_get_draw_context
  (c-name "gsk_cairo_node_get_draw_context")
  (return-type "cairo_t*")
  (parameters
    '("GskRenderNode*" "node")
  )
)

(define-function gsk_cairo_node_get_surface
  (c-name "gsk_cairo_node_get_surface")
  (return-type "cairo_surface_t*")
  (parameters
    '("GskRenderNode*" "node")
  )
)

(define-function gsk_container_node_get_type
  (c-name "gsk_container_node_get_type")
  (return-type "GType")
)

(define-function gsk_container_node_new
  (c-name "gsk_container_node_new")
  (is-constructor-of "GskContainerNode")
  (return-type "GskRenderNode*")
  (parameters
    '("GskRenderNode**" "children")
    '("guint" "n_children")
  )
)

(define-function gsk_container_node_get_n_children
  (c-name "gsk_container_node_get_n_children")
  (return-type "guint")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_container_node_get_child
  (c-name "gsk_container_node_get_child")
  (return-type "GskRenderNode*")
  (parameters
    '("const-GskRenderNode*" "node")
    '("guint" "idx")
  )
)

(define-function gsk_transform_node_get_type
  (c-name "gsk_transform_node_get_type")
  (return-type "GType")
)

(define-function gsk_transform_node_new
  (c-name "gsk_transform_node_new")
  (is-constructor-of "GskTransformNode")
  (return-type "GskRenderNode*")
  (parameters
    '("GskRenderNode*" "child")
    '("GskTransform*" "transform")
  )
)

(define-function gsk_transform_node_get_child
  (c-name "gsk_transform_node_get_child")
  (return-type "GskRenderNode*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_transform_node_get_transform
  (c-name "gsk_transform_node_get_transform")
  (return-type "GskTransform*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_opacity_node_get_type
  (c-name "gsk_opacity_node_get_type")
  (return-type "GType")
)

(define-function gsk_opacity_node_new
  (c-name "gsk_opacity_node_new")
  (is-constructor-of "GskOpacityNode")
  (return-type "GskRenderNode*")
  (parameters
    '("GskRenderNode*" "child")
    '("float" "opacity")
  )
)

(define-function gsk_opacity_node_get_child
  (c-name "gsk_opacity_node_get_child")
  (return-type "GskRenderNode*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_opacity_node_get_opacity
  (c-name "gsk_opacity_node_get_opacity")
  (return-type "float")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_color_matrix_node_get_type
  (c-name "gsk_color_matrix_node_get_type")
  (return-type "GType")
)

(define-function gsk_color_matrix_node_new
  (c-name "gsk_color_matrix_node_new")
  (is-constructor-of "GskColorMatrixNode")
  (return-type "GskRenderNode*")
  (parameters
    '("GskRenderNode*" "child")
    '("const-graphene_matrix_t*" "color_matrix")
    '("const-graphene_vec4_t*" "color_offset")
  )
)

(define-function gsk_color_matrix_node_get_child
  (c-name "gsk_color_matrix_node_get_child")
  (return-type "GskRenderNode*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_color_matrix_node_get_color_matrix
  (c-name "gsk_color_matrix_node_get_color_matrix")
  (return-type "const-graphene_matrix_t*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_color_matrix_node_get_color_offset
  (c-name "gsk_color_matrix_node_get_color_offset")
  (return-type "const-graphene_vec4_t*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_repeat_node_get_type
  (c-name "gsk_repeat_node_get_type")
  (return-type "GType")
)

(define-function gsk_repeat_node_new
  (c-name "gsk_repeat_node_new")
  (is-constructor-of "GskRepeatNode")
  (return-type "GskRenderNode*")
  (parameters
    '("const-graphene_rect_t*" "bounds")
    '("GskRenderNode*" "child")
    '("const-graphene_rect_t*" "child_bounds")
  )
)

(define-function gsk_repeat_node_get_child
  (c-name "gsk_repeat_node_get_child")
  (return-type "GskRenderNode*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_repeat_node_get_child_bounds
  (c-name "gsk_repeat_node_get_child_bounds")
  (return-type "const-graphene_rect_t*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_clip_node_get_type
  (c-name "gsk_clip_node_get_type")
  (return-type "GType")
)

(define-function gsk_clip_node_new
  (c-name "gsk_clip_node_new")
  (is-constructor-of "GskClipNode")
  (return-type "GskRenderNode*")
  (parameters
    '("GskRenderNode*" "child")
    '("const-graphene_rect_t*" "clip")
  )
)

(define-function gsk_clip_node_get_child
  (c-name "gsk_clip_node_get_child")
  (return-type "GskRenderNode*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_clip_node_get_clip
  (c-name "gsk_clip_node_get_clip")
  (return-type "const-graphene_rect_t*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_rounded_clip_node_get_type
  (c-name "gsk_rounded_clip_node_get_type")
  (return-type "GType")
)

(define-function gsk_rounded_clip_node_new
  (c-name "gsk_rounded_clip_node_new")
  (is-constructor-of "GskRoundedClipNode")
  (return-type "GskRenderNode*")
  (parameters
    '("GskRenderNode*" "child")
    '("const-GskRoundedRect*" "clip")
  )
)

(define-function gsk_rounded_clip_node_get_child
  (c-name "gsk_rounded_clip_node_get_child")
  (return-type "GskRenderNode*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_rounded_clip_node_get_clip
  (c-name "gsk_rounded_clip_node_get_clip")
  (return-type "const-GskRoundedRect*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_fill_node_get_type
  (c-name "gsk_fill_node_get_type")
  (return-type "GType")
)

(define-function gsk_fill_node_new
  (c-name "gsk_fill_node_new")
  (is-constructor-of "GskFillNode")
  (return-type "GskRenderNode*")
  (parameters
    '("GskRenderNode*" "child")
    '("GskPath*" "path")
    '("GskFillRule" "fill_rule")
  )
)

(define-function gsk_fill_node_get_child
  (c-name "gsk_fill_node_get_child")
  (return-type "GskRenderNode*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_fill_node_get_path
  (c-name "gsk_fill_node_get_path")
  (return-type "GskPath*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_fill_node_get_fill_rule
  (c-name "gsk_fill_node_get_fill_rule")
  (return-type "GskFillRule")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_stroke_node_get_type
  (c-name "gsk_stroke_node_get_type")
  (return-type "GType")
)

(define-function gsk_stroke_node_new
  (c-name "gsk_stroke_node_new")
  (is-constructor-of "GskStrokeNode")
  (return-type "GskRenderNode*")
  (parameters
    '("GskRenderNode*" "child")
    '("GskPath*" "path")
    '("const-GskStroke*" "stroke")
  )
)

(define-function gsk_stroke_node_get_child
  (c-name "gsk_stroke_node_get_child")
  (return-type "GskRenderNode*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_stroke_node_get_path
  (c-name "gsk_stroke_node_get_path")
  (return-type "GskPath*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_stroke_node_get_stroke
  (c-name "gsk_stroke_node_get_stroke")
  (return-type "const-GskStroke*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_shadow_node_get_type
  (c-name "gsk_shadow_node_get_type")
  (return-type "GType")
)

(define-function gsk_shadow_node_new
  (c-name "gsk_shadow_node_new")
  (is-constructor-of "GskShadowNode")
  (return-type "GskRenderNode*")
  (parameters
    '("GskRenderNode*" "child")
    '("const-GskShadow*" "shadows")
    '("gsize" "n_shadows")
  )
)

(define-function gsk_shadow_node_get_child
  (c-name "gsk_shadow_node_get_child")
  (return-type "GskRenderNode*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_shadow_node_get_shadow
  (c-name "gsk_shadow_node_get_shadow")
  (return-type "const-GskShadow*")
  (parameters
    '("const-GskRenderNode*" "node")
    '("gsize" "i")
  )
)

(define-function gsk_shadow_node_get_n_shadows
  (c-name "gsk_shadow_node_get_n_shadows")
  (return-type "gsize")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_blend_node_get_type
  (c-name "gsk_blend_node_get_type")
  (return-type "GType")
)

(define-function gsk_blend_node_new
  (c-name "gsk_blend_node_new")
  (is-constructor-of "GskBlendNode")
  (return-type "GskRenderNode*")
  (parameters
    '("GskRenderNode*" "bottom")
    '("GskRenderNode*" "top")
    '("GskBlendMode" "blend_mode")
  )
)

(define-function gsk_blend_node_get_bottom_child
  (c-name "gsk_blend_node_get_bottom_child")
  (return-type "GskRenderNode*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_blend_node_get_top_child
  (c-name "gsk_blend_node_get_top_child")
  (return-type "GskRenderNode*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_blend_node_get_blend_mode
  (c-name "gsk_blend_node_get_blend_mode")
  (return-type "GskBlendMode")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_cross_fade_node_get_type
  (c-name "gsk_cross_fade_node_get_type")
  (return-type "GType")
)

(define-function gsk_cross_fade_node_new
  (c-name "gsk_cross_fade_node_new")
  (is-constructor-of "GskCrossFadeNode")
  (return-type "GskRenderNode*")
  (parameters
    '("GskRenderNode*" "start")
    '("GskRenderNode*" "end")
    '("float" "progress")
  )
)

(define-function gsk_cross_fade_node_get_start_child
  (c-name "gsk_cross_fade_node_get_start_child")
  (return-type "GskRenderNode*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_cross_fade_node_get_end_child
  (c-name "gsk_cross_fade_node_get_end_child")
  (return-type "GskRenderNode*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_cross_fade_node_get_progress
  (c-name "gsk_cross_fade_node_get_progress")
  (return-type "float")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_text_node_get_type
  (c-name "gsk_text_node_get_type")
  (return-type "GType")
)

(define-function gsk_text_node_new
  (c-name "gsk_text_node_new")
  (is-constructor-of "GskTextNode")
  (return-type "GskRenderNode*")
  (parameters
    '("PangoFont*" "font")
    '("PangoGlyphString*" "glyphs")
    '("const-GdkRGBA*" "color")
    '("const-graphene_point_t*" "offset")
  )
)

(define-function gsk_text_node_get_font
  (c-name "gsk_text_node_get_font")
  (return-type "PangoFont*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_text_node_has_color_glyphs
  (c-name "gsk_text_node_has_color_glyphs")
  (return-type "gboolean")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_text_node_get_num_glyphs
  (c-name "gsk_text_node_get_num_glyphs")
  (return-type "guint")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_text_node_get_glyphs
  (c-name "gsk_text_node_get_glyphs")
  (return-type "const-PangoGlyphInfo*")
  (parameters
    '("const-GskRenderNode*" "node")
    '("guint*" "n_glyphs")
  )
)

(define-function gsk_text_node_get_color
  (c-name "gsk_text_node_get_color")
  (return-type "const-GdkRGBA*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_text_node_get_offset
  (c-name "gsk_text_node_get_offset")
  (return-type "const-graphene_point_t*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_blur_node_get_type
  (c-name "gsk_blur_node_get_type")
  (return-type "GType")
)

(define-function gsk_blur_node_new
  (c-name "gsk_blur_node_new")
  (is-constructor-of "GskBlurNode")
  (return-type "GskRenderNode*")
  (parameters
    '("GskRenderNode*" "child")
    '("float" "radius")
  )
)

(define-function gsk_blur_node_get_child
  (c-name "gsk_blur_node_get_child")
  (return-type "GskRenderNode*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_blur_node_get_radius
  (c-name "gsk_blur_node_get_radius")
  (return-type "float")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_mask_node_get_type
  (c-name "gsk_mask_node_get_type")
  (return-type "GType")
)

(define-function gsk_mask_node_new
  (c-name "gsk_mask_node_new")
  (is-constructor-of "GskMaskNode")
  (return-type "GskRenderNode*")
  (parameters
    '("GskRenderNode*" "source")
    '("GskRenderNode*" "mask")
    '("GskMaskMode" "mask_mode")
  )
)

(define-function gsk_mask_node_get_source
  (c-name "gsk_mask_node_get_source")
  (return-type "GskRenderNode*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_mask_node_get_mask
  (c-name "gsk_mask_node_get_mask")
  (return-type "GskRenderNode*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_mask_node_get_mask_mode
  (c-name "gsk_mask_node_get_mask_mode")
  (return-type "GskMaskMode")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_gl_shader_node_get_type
  (c-name "gsk_gl_shader_node_get_type")
  (return-type "GType")
)

(define-method node_new
  (of-object "GskGLShader")
  (c-name "gsk_gl_shader_node_new")
  (return-type "GskRenderNode*")
  (parameters
    '("const-graphene_rect_t*" "bounds")
    '("GBytes*" "args")
    '("GskRenderNode**" "children")
    '("guint" "n_children")
  )
)

(define-function gsk_gl_shader_node_get_n_children
  (c-name "gsk_gl_shader_node_get_n_children")
  (return-type "guint")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_gl_shader_node_get_child
  (c-name "gsk_gl_shader_node_get_child")
  (return-type "GskRenderNode*")
  (parameters
    '("const-GskRenderNode*" "node")
    '("guint" "idx")
  )
)

(define-function gsk_gl_shader_node_get_args
  (c-name "gsk_gl_shader_node_get_args")
  (return-type "GBytes*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_gl_shader_node_get_shader
  (c-name "gsk_gl_shader_node_get_shader")
  (return-type "GskGLShader*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_subsurface_node_get_type
  (c-name "gsk_subsurface_node_get_type")
  (return-type "GType")
)

(define-function gsk_subsurface_node_new
  (c-name "gsk_subsurface_node_new")
  (is-constructor-of "GskSubsurfaceNode")
  (return-type "GskRenderNode*")
  (parameters
    '("GskRenderNode*" "child")
    '("gpointer" "subsurface")
  )
)

(define-function gsk_subsurface_node_get_child
  (c-name "gsk_subsurface_node_get_child")
  (return-type "GskRenderNode*")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_subsurface_node_get_subsurface
  (c-name "gsk_subsurface_node_get_subsurface")
  (return-type "gpointer")
  (parameters
    '("const-GskRenderNode*" "node")
  )
)

(define-function gsk_value_set_render_node
  (c-name "gsk_value_set_render_node")
  (return-type "none")
  (parameters
    '("GValue*" "value")
    '("GskRenderNode*" "node")
  )
)

(define-function gsk_value_take_render_node
  (c-name "gsk_value_take_render_node")
  (return-type "none")
  (parameters
    '("GValue*" "value")
    '("GskRenderNode*" "node")
  )
)

(define-function gsk_value_get_render_node
  (c-name "gsk_value_get_render_node")
  (return-type "GskRenderNode*")
  (parameters
    '("const-GValue*" "value")
  )
)

(define-function gsk_value_dup_render_node
  (c-name "gsk_value_dup_render_node")
  (return-type "GskRenderNode*")
  (parameters
    '("const-GValue*" "value")
  )
)



;; From gskroundedrect.h

(define-method init
  (of-object "GskRoundedRect")
  (c-name "gsk_rounded_rect_init")
  (return-type "GskRoundedRect*")
  (parameters
    '("const-graphene_rect_t*" "bounds")
    '("const-graphene_size_t*" "top_left")
    '("const-graphene_size_t*" "top_right")
    '("const-graphene_size_t*" "bottom_right")
    '("const-graphene_size_t*" "bottom_left")
  )
)

(define-method init_copy
  (of-object "GskRoundedRect")
  (c-name "gsk_rounded_rect_init_copy")
  (return-type "GskRoundedRect*")
  (parameters
    '("const-GskRoundedRect*" "src")
  )
)

(define-method init_from_rect
  (of-object "GskRoundedRect")
  (c-name "gsk_rounded_rect_init_from_rect")
  (return-type "GskRoundedRect*")
  (parameters
    '("const-graphene_rect_t*" "bounds")
    '("float" "radius")
  )
)

(define-method normalize
  (of-object "GskRoundedRect")
  (c-name "gsk_rounded_rect_normalize")
  (return-type "GskRoundedRect*")
)

(define-method offset
  (of-object "GskRoundedRect")
  (c-name "gsk_rounded_rect_offset")
  (return-type "GskRoundedRect*")
  (parameters
    '("float" "dx")
    '("float" "dy")
  )
)

(define-method shrink
  (of-object "GskRoundedRect")
  (c-name "gsk_rounded_rect_shrink")
  (return-type "GskRoundedRect*")
  (parameters
    '("float" "top")
    '("float" "right")
    '("float" "bottom")
    '("float" "left")
  )
)

(define-method is_rectilinear
  (of-object "GskRoundedRect")
  (c-name "gsk_rounded_rect_is_rectilinear")
  (return-type "gboolean")
)

(define-method contains_point
  (of-object "GskRoundedRect")
  (c-name "gsk_rounded_rect_contains_point")
  (return-type "gboolean")
  (parameters
    '("const-graphene_point_t*" "point")
  )
)

(define-method contains_rect
  (of-object "GskRoundedRect")
  (c-name "gsk_rounded_rect_contains_rect")
  (return-type "gboolean")
  (parameters
    '("const-graphene_rect_t*" "rect")
  )
)

(define-method intersects_rect
  (of-object "GskRoundedRect")
  (c-name "gsk_rounded_rect_intersects_rect")
  (return-type "gboolean")
  (parameters
    '("const-graphene_rect_t*" "rect")
  )
)



;; From gskstroke.h

(define-function gsk_stroke_get_type
  (c-name "gsk_stroke_get_type")
  (return-type "GType")
)

(define-function gsk_stroke_new
  (c-name "gsk_stroke_new")
  (is-constructor-of "GskStroke")
  (return-type "GskStroke*")
  (parameters
    '("float" "line_width")
  )
)

(define-method copy
  (of-object "GskStroke")
  (c-name "gsk_stroke_copy")
  (return-type "GskStroke*")
)

(define-method free
  (of-object "GskStroke")
  (c-name "gsk_stroke_free")
  (return-type "none")
)

(define-function gsk_stroke_equal
  (c-name "gsk_stroke_equal")
  (return-type "gboolean")
  (parameters
    '("gconstpointer" "stroke1")
    '("gconstpointer" "stroke2")
  )
)

(define-method set_line_width
  (of-object "GskStroke")
  (c-name "gsk_stroke_set_line_width")
  (return-type "none")
  (parameters
    '("float" "line_width")
  )
)

(define-method get_line_width
  (of-object "GskStroke")
  (c-name "gsk_stroke_get_line_width")
  (return-type "float")
)

(define-method set_line_cap
  (of-object "GskStroke")
  (c-name "gsk_stroke_set_line_cap")
  (return-type "none")
  (parameters
    '("GskLineCap" "line_cap")
  )
)

(define-method get_line_cap
  (of-object "GskStroke")
  (c-name "gsk_stroke_get_line_cap")
  (return-type "GskLineCap")
)

(define-method set_line_join
  (of-object "GskStroke")
  (c-name "gsk_stroke_set_line_join")
  (return-type "none")
  (parameters
    '("GskLineJoin" "line_join")
  )
)

(define-method get_line_join
  (of-object "GskStroke")
  (c-name "gsk_stroke_get_line_join")
  (return-type "GskLineJoin")
)

(define-method set_miter_limit
  (of-object "GskStroke")
  (c-name "gsk_stroke_set_miter_limit")
  (return-type "none")
  (parameters
    '("float" "limit")
  )
)

(define-method get_miter_limit
  (of-object "GskStroke")
  (c-name "gsk_stroke_get_miter_limit")
  (return-type "float")
)

(define-method set_dash
  (of-object "GskStroke")
  (c-name "gsk_stroke_set_dash")
  (return-type "none")
  (parameters
    '("const-float*" "dash")
    '("gsize" "n_dash")
  )
)

(define-method get_dash
  (of-object "GskStroke")
  (c-name "gsk_stroke_get_dash")
  (return-type "const-float*")
  (parameters
    '("gsize*" "n_dash")
  )
)

(define-method set_dash_offset
  (of-object "GskStroke")
  (c-name "gsk_stroke_set_dash_offset")
  (return-type "none")
  (parameters
    '("float" "offset")
  )
)

(define-method get_dash_offset
  (of-object "GskStroke")
  (c-name "gsk_stroke_get_dash_offset")
  (return-type "float")
)

(define-method to_cairo
  (of-object "GskStroke")
  (c-name "gsk_stroke_to_cairo")
  (return-type "none")
  (parameters
    '("cairo_t*" "cr")
  )
)



;; From gsktransform.h

(define-function gsk_transform_get_type
  (c-name "gsk_transform_get_type")
  (return-type "GType")
)

(define-method ref
  (of-object "GskTransform")
  (c-name "gsk_transform_ref")
  (return-type "GskTransform*")
)

(define-method unref
  (of-object "GskTransform")
  (c-name "gsk_transform_unref")
  (return-type "none")
)

(define-method print
  (of-object "GskTransform")
  (c-name "gsk_transform_print")
  (return-type "none")
  (parameters
    '("GString*" "string")
  )
)

(define-method to_string
  (of-object "GskTransform")
  (c-name "gsk_transform_to_string")
  (return-type "char*")
)

(define-function gsk_transform_parse
  (c-name "gsk_transform_parse")
  (return-type "gboolean")
  (parameters
    '("const-char*" "string")
    '("GskTransform**" "out_transform")
  )
)

(define-method to_matrix
  (of-object "GskTransform")
  (c-name "gsk_transform_to_matrix")
  (return-type "none")
  (parameters
    '("graphene_matrix_t*" "out_matrix")
  )
)

(define-method to_2d
  (of-object "GskTransform")
  (c-name "gsk_transform_to_2d")
  (return-type "none")
  (parameters
    '("float*" "out_xx")
    '("float*" "out_yx")
    '("float*" "out_xy")
    '("float*" "out_yy")
    '("float*" "out_dx")
    '("float*" "out_dy")
  )
)

(define-method to_2d_components
  (of-object "GskTransform")
  (c-name "gsk_transform_to_2d_components")
  (return-type "none")
  (parameters
    '("float*" "out_skew_x")
    '("float*" "out_skew_y")
    '("float*" "out_scale_x")
    '("float*" "out_scale_y")
    '("float*" "out_angle")
    '("float*" "out_dx")
    '("float*" "out_dy")
  )
)

(define-method to_affine
  (of-object "GskTransform")
  (c-name "gsk_transform_to_affine")
  (return-type "none")
  (parameters
    '("float*" "out_scale_x")
    '("float*" "out_scale_y")
    '("float*" "out_dx")
    '("float*" "out_dy")
  )
)

(define-method to_translate
  (of-object "GskTransform")
  (c-name "gsk_transform_to_translate")
  (return-type "none")
  (parameters
    '("float*" "out_dx")
    '("float*" "out_dy")
  )
)

(define-method get_category
  (of-object "GskTransform")
  (c-name "gsk_transform_get_category")
  (return-type "GskTransformCategory")
)

(define-method equal
  (of-object "GskTransform")
  (c-name "gsk_transform_equal")
  (return-type "gboolean")
  (parameters
    '("GskTransform*" "second")
  )
)

(define-function gsk_transform_new
  (c-name "gsk_transform_new")
  (is-constructor-of "GskTransform")
  (return-type "GskTransform*")
)

(define-method transform
  (of-object "GskTransform")
  (c-name "gsk_transform_transform")
  (return-type "GskTransform*")
  (parameters
    '("GskTransform*" "other")
  )
)

(define-method invert
  (of-object "GskTransform")
  (c-name "gsk_transform_invert")
  (return-type "GskTransform*")
)

(define-method matrix
  (of-object "GskTransform")
  (c-name "gsk_transform_matrix")
  (return-type "GskTransform*")
  (parameters
    '("const-graphene_matrix_t*" "matrix")
  )
)

(define-method translate
  (of-object "GskTransform")
  (c-name "gsk_transform_translate")
  (return-type "GskTransform*")
  (parameters
    '("const-graphene_point_t*" "point")
  )
)

(define-method translate_3d
  (of-object "GskTransform")
  (c-name "gsk_transform_translate_3d")
  (return-type "GskTransform*")
  (parameters
    '("const-graphene_point3d_t*" "point")
  )
)

(define-method skew
  (of-object "GskTransform")
  (c-name "gsk_transform_skew")
  (return-type "GskTransform*")
  (parameters
    '("float" "skew_x")
    '("float" "skew_y")
  )
)

(define-method rotate
  (of-object "GskTransform")
  (c-name "gsk_transform_rotate")
  (return-type "GskTransform*")
  (parameters
    '("float" "angle")
  )
)

(define-method rotate_3d
  (of-object "GskTransform")
  (c-name "gsk_transform_rotate_3d")
  (return-type "GskTransform*")
  (parameters
    '("float" "angle")
    '("const-graphene_vec3_t*" "axis")
  )
)

(define-method scale
  (of-object "GskTransform")
  (c-name "gsk_transform_scale")
  (return-type "GskTransform*")
  (parameters
    '("float" "factor_x")
    '("float" "factor_y")
  )
)

(define-method scale_3d
  (of-object "GskTransform")
  (c-name "gsk_transform_scale_3d")
  (return-type "GskTransform*")
  (parameters
    '("float" "factor_x")
    '("float" "factor_y")
    '("float" "factor_z")
  )
)

(define-method perspective
  (of-object "GskTransform")
  (c-name "gsk_transform_perspective")
  (return-type "GskTransform*")
  (parameters
    '("float" "depth")
  )
)

(define-method transform_bounds
  (of-object "GskTransform")
  (c-name "gsk_transform_transform_bounds")
  (return-type "none")
  (parameters
    '("const-graphene_rect_t*" "rect")
    '("graphene_rect_t*" "out_rect")
  )
)

(define-method transform_point
  (of-object "GskTransform")
  (c-name "gsk_transform_transform_point")
  (return-type "none")
  (parameters
    '("const-graphene_point_t*" "point")
    '("graphene_point_t*" "out_point")
  )
)



;; From gsktypes.h



;; From gskenumtypes.h

(define-function gsk_render_node_type_get_type
  (c-name "gsk_render_node_type_get_type")
  (return-type "GType")
)

(define-function gsk_scaling_filter_get_type
  (c-name "gsk_scaling_filter_get_type")
  (return-type "GType")
)

(define-function gsk_blend_mode_get_type
  (c-name "gsk_blend_mode_get_type")
  (return-type "GType")
)

(define-function gsk_corner_get_type
  (c-name "gsk_corner_get_type")
  (return-type "GType")
)

(define-function gsk_fill_rule_get_type
  (c-name "gsk_fill_rule_get_type")
  (return-type "GType")
)

(define-function gsk_line_cap_get_type
  (c-name "gsk_line_cap_get_type")
  (return-type "GType")
)

(define-function gsk_line_join_get_type
  (c-name "gsk_line_join_get_type")
  (return-type "GType")
)

(define-function gsk_path_operation_get_type
  (c-name "gsk_path_operation_get_type")
  (return-type "GType")
)

(define-function gsk_path_direction_get_type
  (c-name "gsk_path_direction_get_type")
  (return-type "GType")
)

(define-function gsk_serialization_error_get_type
  (c-name "gsk_serialization_error_get_type")
  (return-type "GType")
)

(define-function gsk_transform_category_get_type
  (c-name "gsk_transform_category_get_type")
  (return-type "GType")
)

(define-function gsk_gl_uniform_type_get_type
  (c-name "gsk_gl_uniform_type_get_type")
  (return-type "GType")
)

(define-function gsk_mask_mode_get_type
  (c-name "gsk_mask_mode_get_type")
  (return-type "GType")
)

(define-function gsk_path_foreach_flags_get_type
  (c-name "gsk_path_foreach_flags_get_type")
  (return-type "GType")
)



;; From gskresources.h


